/*
 *
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * Copyright (c) 2016-2024, Arm Limited. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 * - Redistributions of source code must retain the above copyright notice, this
 *   list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright notice, this
 *    list of conditions and the following disclaimer in the documentation and/or
 *    other materials provided with the distribution.
 * - Neither the name of ARM nor the names of its contributors may be used to
 *    endorse or promote products derived from this software without specific prior
 *    written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */

#include "acamera_command_api.h"
/*#include "acamera_firmware_api.h" */
#include "acamera_firmware_settings.h"
/* created from 2016-10-19T16:42:58.865Z UTClinear.json */

/* CALIBRATION_LIGHT_SRC */
static uint16_t _calibration_light_src[][ 2 ] = { { 297, 202 }, { 226, 346 }, { 154, 315 }, { 384, 150 } };
/* CALIBRATION_RG_POS */
static uint16_t _calibration_rg_pos[] = { 180, 195, 211, 227, 243, 256, 275, 291, 306, 322, 338, 354, 370, 386, 421 };

/* CALIBRATION_BG_POS */
static uint16_t _calibration_bg_pos[] = { 137, 157, 173, 189, 205, 220, 236, 256, 268, 284, 300, 315, 331, 347, 377 };

/* CALIBRATION_MESH_RGBG_WEIGHT */
static uint16_t _calibration_mesh_rgbg_weight[][ 15 ] = { { 0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   4,   13,  37,  40,  84  },
                                                          { 0,   0,   0,   0,   0,   0,   1,   3,   11,  32,  77,  150, 256, 256, 256 },
                                                          { 0,   0,   0,   0,   0,   0,   7,   40,  91,  169, 254, 256, 256, 191, 79  },
                                                          { 0,   0,   0,   0,   1,   4,   41,  149, 256, 256, 256, 202, 92,  25,  3   },
                                                          { 0,   0,   0,   1,   6,   28,  138, 256, 256, 224, 118, 42,  9,   1,   0   },
                                                          { 0,   0,   0,   5,   33,  99,  256, 256, 219, 77,  20,  4,   0,   0,   0   },
                                                          { 0,   0,   3,   28,  113, 225, 256, 224, 87,  17,  1,   0,   0,   0,   0   },
                                                          { 0,   2,   24,  118, 256, 256, 203, 67,  13,  1,   0,   0,   0,   0,   0   },
                                                          { 0,   8,   67,  215, 256, 256, 103, 22,  3,   0,   0,   0,   0,   0,   0   },
                                                          { 1,   28,  168, 256, 247, 123, 23,  3,   0,   0,   0,   0,   0,   0,   0   },
                                                          { 7,   77,  256, 256, 91,  25,  2,   0,   0,   0,   0,   0,   0,   0,   0   },
                                                          { 14,  145, 256, 173, 29,  3,   0,   0,   0,   0,   0,   0,   0,   0,   0   },
                                                          { 25,  208, 256, 71,  4,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0   },
                                                          { 46,  256, 189, 19,  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0   },
                                                          { 132, 256, 39,  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0   } };

/* CALIBRATION_MESH_LS_WEIGHT */
static uint16_t _calibration_mesh_ls_weight[][ 15 ] = { { 0, 0, 0,  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  0, 0 },
                                                        { 0, 0, 0,  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  0, 0 },
                                                        { 0, 0, 3,  4,   25,  42,  53,  57,  53,  42,  25,  4,   3,  0, 0 },
                                                        { 0, 0, 4,  131, 157, 179, 193, 198, 193, 179, 157, 131, 4,  0, 0 },
                                                        { 0, 0, 25, 157, 188, 214, 232, 238, 232, 214, 188, 157, 25, 0, 0 },
                                                        { 0, 0, 42, 179, 214, 243, 255, 256, 255, 243, 214, 179, 42, 0, 0 },
                                                        { 0, 0, 53, 193, 232, 255, 256, 256, 256, 255, 232, 193, 53, 0, 0 },
                                                        { 0, 0, 57, 198, 238, 256, 256, 256, 256, 256, 238, 198, 57, 0, 0 },
                                                        { 0, 0, 53, 193, 232, 255, 256, 256, 256, 255, 232, 193, 53, 0, 0 },
                                                        { 0, 0, 42, 179, 214, 243, 255, 256, 255, 243, 214, 179, 42, 0, 0 },
                                                        { 0, 0, 25, 157, 188, 214, 232, 238, 232, 214, 188, 157, 25, 0, 0 },
                                                        { 0, 0, 4,  131, 157, 179, 193, 198, 193, 179, 157, 131, 4,  0, 0 },
                                                        { 0, 0, 3,  4,   25,  42,  53,  57,  53,  42,  25,  4,   3,  0, 0 },
                                                        { 0, 0, 0,  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  0, 0 },
                                                        { 0, 0, 0,  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  0, 0 } };

/* CALIBRATION_MESH_COLOR_TEMPERATURE */
static uint16_t _calibration_mesh_color_temperature[][ 15 ] =
{
    { 220, 228, 237, 245, 253, 253, 253, 266, 282, 299, 316, 333, 345, 361, 370 },
    { 207, 216, 224, 233, 242, 249, 253, 256, 272, 289, 306, 323, 340, 355, 370 },
    { 198, 206, 215, 223, 232, 239, 250, 253, 263, 280, 297, 314, 331, 350, 370 },
    { 186, 196, 205, 214, 222, 229, 240, 249, 255, 272, 289, 306, 323, 340, 370 },
    { 176, 185, 195, 204, 213, 220, 230, 239, 247, 264, 281, 298, 315, 332, 370 },
    { 167, 176, 185, 195, 203, 211, 221, 230, 238, 247, 273, 290, 307, 324, 370 },
    { 158, 166, 175, 184, 194, 201, 211, 220, 228, 237, 265, 282, 299, 316, 370 },
    { 154, 154, 163, 172, 181, 189, 199, 208, 216, 225, 233, 271, 288, 305, 359 },
    { 148, 154, 156, 165, 174, 181, 192, 200, 209, 217, 226, 235, 282, 299, 356 },
    { 137, 143, 149, 155, 164, 172, 182, 191, 199, 208, 216, 225, 234, 291, 328 },
    { 128, 132, 138, 144, 151, 162, 173, 182, 189, 198, 207, 215, 224, 283, 320 },
    { 123, 125, 128, 134, 140, 145, 164, 173, 181, 189, 197, 206, 215, 224, 312 },
    { 117, 119, 121, 123, 125, 134, 142, 163, 172, 181, 189, 196, 205, 214, 304 },
    { 110, 113, 115, 117, 119, 121, 123, 137, 143, 171, 180, 189, 195, 204, 296 },
    { 107, 107, 107, 107, 107, 109, 111, 114, 116, 118, 120, 171, 180, 127, 205 }
};

/* RG, BG, MULT. final wb gain adjuster for a sky scene. divided by CALIBRATION_WB_STRENGTH_MULT in use */
static uint16_t _calibration_wb_strength[] = { 1000, 1000, 1000 };

/* lux threshold for sky */
static uint16_t _calibration_sky_lux_th[] = { 10000 };

/* 1D rg/bg readout from color_temp */
static uint16_t _calibration_ct_rg_pos_calc[] = { 195, 212, 228, 256, 309, 379, 401 };

/* 1D rg/bg readout from color_temp */
static uint16_t _calibration_ct_bg_pos_calc[] = { 363, 315, 287, 256, 199, 164, 158 };

/* CALIBRATION_COLOR_TEMP */
static uint16_t _calibration_color_temp[] = { 107, 128, 154, 189, 253, 345, 370 };

/* CALIBRATION_CT65POS */
static uint16_t _calibration_ct65pos[] = { 2 };

/* CALIBRATION_CT40POS */
static uint16_t _calibration_ct40pos[] = { 6 };

/* CALIBRATION_CT30POS */
static uint16_t _calibration_ct30pos[] = { 5 };

/* CALIBRATION_EVTOLUX_EV_LUT */
static uint32_t _calibration_evtolux_ev_lut[] /* evlog2 */
    = { 276192, 318218, 518924, 799840, 876931, 924099, 1084715, 1154404, 1401772, 1590084, 1849623, 2011025 };
/* = {296692,327407,550106,809489,871881,946642,1100166,1159400,1435931,1608343,1874631,2040442}; */

/* CALIBRATION_EVTOLUX_LUX_LUT */
static uint32_t _calibration_evtolux_lux_lut[] = { 10100, 8950, 5120, 2560, 2080, 1800, 1200, 1000, 500, 320, 160, 100 };

/* CALIBRATION_BLACK_LEVEL_R */
static uint16_t _calibration_black_level_r[][ 2 ] =
{
    { 0, 240 }, { 32, 240 }, { 64, 240 }, { 96, 240 }, { 128, 240 }, { 160, 240 }, { 192, 240 }, { 224, 240 }, { 256, 240 }
};

/* CALIBRATION_BLACK_LEVEL_GR */
static uint16_t _calibration_black_level_gr[][ 2 ] =
{
    { 0, 240 }, { 32, 240 }, { 64, 240 }, { 96, 240 }, { 128, 240 }, { 160, 240 }, { 192, 240 }, { 224, 240 }, { 256, 240 }
};

/* CALIBRATION_BLACK_LEVEL_GB */
static uint16_t _calibration_black_level_gb[][ 2 ] =
{
    { 0, 240 }, { 32, 240 }, { 64, 240 }, { 96, 240 }, { 128, 240 }, { 160, 240 }, { 192, 240 }, { 224, 240 }, { 256, 240 }
};

/* CALIBRATION_BLACK_LEVEL_B */
static uint16_t _calibration_black_level_b[][ 2 ] =
{
    { 0, 240 }, { 32, 240 }, { 64, 240 }, { 96, 240 }, { 128, 240 }, { 160, 240 }, { 192, 240 }, { 224, 240 }, { 256, 240 }
};

/* CALIBRATION_STATIC_WB */
static uint16_t _calibration_static_wb[] = { 688, 256, 256, 404 };

/* RR RG RB GR GG GB BR BG BB */
static uint16_t _calibration_mt_absolute_ls_a_ccm[] = { 399, 32876, 32803, 32828, 346, 32798, 22, 32988, 454 };

/* RR RG RB GR GG GB BR BG BB */
static uint16_t _calibration_mt_absolute_ls_d40_ccm[] = { 440, 32933, 32787, 32818, 331, 32793, 23, 32915, 380 };

/* RR RG RB GR GG GB BR BG BB */
static uint16_t _calibration_mt_absolute_ls_d50_ccm[] = { 477, 32962, 32795, 32808, 368, 32840, 16, 32906, 378 };

/* CALIBRATION_SHADING_LS_A_R */
static uint8_t _calibration_shading_ls_a_r[] =
{
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64
};

/* CALIBRATION_SHADING_LS_A_G */
static uint8_t _calibration_shading_ls_a_g[] =
{
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64
};

/* CALIBRATION_SHADING_LS_A_B */
static uint8_t _calibration_shading_ls_a_b[] =
{
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64
};

/* CALIBRATION_SHADING_LS_TL84_R */
static uint8_t _calibration_shading_ls_tl84_r[] =
{
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64
};

/* CALIBRATION_SHADING_LS_TL84_G */
static uint8_t _calibration_shading_ls_tl84_g[] =
{
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64
};

/* CALIBRATION_SHADING_LS_TL84_B */
static uint8_t _calibration_shading_ls_tl84_b[] =
{
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64
};

/* CALIBRATION_SHADING_LS_D65_R */
static uint8_t _calibration_shading_ls_d65_r[] =
{
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64
};

/* CALIBRATION_SHADING_LS_D65_G */
static uint8_t _calibration_shading_ls_d65_g[] =
{
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64
};

/* CALIBRATION_SHADING_LS_D65_B */
static uint8_t _calibration_shading_ls_d65_b[] =
{
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64
};

/* R G B */
static uint16_t _calibration_awb_warming_ls_a[] = { 256, 256, 256 };

/* R G B */
static uint16_t _calibration_awb_warming_ls_d75[] = { 256, 256, 256 };

/* R G B */
static uint16_t _calibration_awb_warming_ls_d50[] = { 256, 256, 256 };

/* CALIBRATION_NOISE_PROFILE */
static uint8_t _calibration_noise_profile[] =
{
    0,  0,  0,  0,  0,  0,  0,  1,  18, 28, 33, 36, 39, 41, 43, 44, 46, 47, 48, 49, 50, 50, 52, 52, 53, 54,
    54, 55, 55, 56, 57, 57, 57, 58, 58, 59, 59, 60, 60, 60, 61, 61, 61, 62, 62, 62, 63, 63, 63, 63, 64, 64,
    64, 64, 65, 65, 65, 65, 66, 66, 66, 66, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 68, 69, 69, 69, 69, 69,
    69, 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73,
    73, 73, 73, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76
};
/*  = */
/*  {0,0,0,0,0,0,0,2,43,57,61,65,67,74,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}; */

/* CALIBRATION_DEMOSAIC */
static uint8_t _calibration_demosaic[] =
{
    1,  18, 28, 33, 36, 39, 41, 43, 44, 46, 47, 48, 49, 50, 50, 52, 52, 53, 54, 54, 55, 55, 56, 57, 57, 57,
    58, 58, 59, 59, 60, 60, 60, 61, 61, 61, 62, 62, 62, 63, 63, 63, 63, 64, 64, 64, 64, 65, 65, 65, 65, 66,
    66, 66, 66, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, 70, 70, 70, 70, 70, 70,
    71, 71, 71, 71, 71, 71, 71, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 73, 74, 74, 74,
    74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76
};
/* = */
/* {2,43,57,61,65,67,74,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}; */

/* 8-bit normalized noise profile for WDR stitching */
static uint8_t _calibration_wdr_np_lut[] =
{
    14,  27,  35,  42,  48,  53,  57,  62,  66,  69,  73,  76,  80,  83,  86,  89,  92,  94,  97,  100, 102, 105,
    107, 109, 112, 114, 116, 118, 120, 123, 125, 127, 129, 131, 133, 134, 136, 138, 140, 142, 144, 145, 147, 149,
    151, 152, 154, 156, 157, 159, 160, 162, 164, 165, 167, 168, 170, 171, 173, 174, 176, 177, 178, 180, 181, 183,
    184, 185, 187, 188, 190, 191, 192, 194, 195, 196, 197, 199, 200, 201, 203, 204, 205, 206, 208, 209, 210, 211,
    212, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 229, 230, 231, 232, 233, 234, 235, 236,
    237, 238, 239, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255
};

/* CALIBRATION_GAMMA */
static uint16_t _calibration_gamma[] =
{
    0,    89,   198,  318,  438,  551,  654,  746,  828,  905,  979,  1047, 1115, 1180, 1242, 1305, 1365, 1425, 1482,
    1539, 1593, 1645, 1695, 1743, 1792, 1838, 1884, 1928, 1972, 2013, 2053, 2091, 2128, 2163, 2196, 2228, 2260, 2289,
    2318, 2347, 2374, 2401, 2428, 2454, 2478, 2503, 2528, 2553, 2577, 2600, 2623, 2646, 2668, 2690, 2711, 2732, 2753,
    2774, 2796, 2816, 2836, 2857, 2877, 2897, 2917, 2938, 2958, 2978, 2998, 3017, 3037, 3056, 3076, 3094, 3114, 3134,
    3153, 3173, 3192, 3212, 3230, 3250, 3268, 3286, 3304, 3321, 3339, 3356, 3374, 3390, 3406, 3422, 3438, 3454, 3470,
    3484, 3500, 3515, 3530, 3544, 3557, 3571, 3584, 3596, 3609, 3621, 3634, 3646, 3659, 3673, 3687, 3702, 3718, 3735,
    3752, 3771, 3790, 3811, 3834, 3856, 3880, 3903, 3929, 3956, 3981, 4009, 4036, 4065, 4095
};
/*    {0, 120, 246, 370, 478, 574, 661, 743, 819, 891, 962, 1031, 1100, 1167, 1232, 1298, 1360, 1421, 1481, 1539, 1596, */
/*    1650, 1703, 1755, 1805, 1853, 1899, 1944, 1988, 2029, 2070, 2107, 2145, 2179, 2212, 2245, 2276, 2305, 2334, 2363, */
/*    2390, 2416, 2442, 2467, 2491, 2515, 2538, 2562, 2584, 2606, 2628, 2649, 2671, 2691, 2712, 2732, 2752, 2772, 2793, */
/*    2812, 2832, 2851, 2871, 2890, 2910, 2930, 2949, 2968, 2988, 3008, 3027, 3047, 3067, 3086, 3106, 3126, 3146, 3165, */
/*    3185, 3205, 3224, 3244, 3263, 3282, 3301, 3320, 3340, 3359, 3378, 3397, 3416, 3434, 3453, 3472, 3491, 3509, 3527, */
/*    3545, 3564, 3583, 3601, 3619, 3637, 3655, 3674, 3692, 3709, 3728, 3745, 3764, 3782, 3799, 3817, 3834, 3852, 3870, */
/*    3887, 3905, 3923, 3939, 3957, 3974, 3991, 4009, 4026, 4044, 4061, 4078, 4095}; */

/*    {0, 120, 246, 370, 478, 574, 661, 743, 819, 891, 962, 1031, 1100, 1167, 1232, 1298, 1360, 1421, 1481, 1539, 1596,
 * 1650, 1703, 1755, 1805, 1853, 1899, 1944, 1988, 2029, 2069, 2106, 2144, 2178, 2211, 2244, 2275, 2304, 2333, 2362,
 * 2389, 2415, 2441, 2466, 2490, 2514, 2537, 2561, 2583, 2606, 2628, 2650, 2673, 2694, 2716, 2737, 2758, 2779, 2802,
 * 2821, 2842, 2862, 2882, 2901, 2922, 2941, 2960, 2978, 2997, 3015, 3032, 3050, 3067, 3083, 3098, 3114, 3129, 3142,
 * 3156, 3170, 3182, 3195, 3208, 3220, 3232, 3244, 3257, 3269, 3281, 3294, 3307, 3319, 3333, 3346, 3361, 3375, 3389,
 * 3404, 3421, 3438, 3455, 3472, 3490, 3509, 3529, 3548, 3567, 3589, 3609, 3631, 3653, 3674, 3697, 3718, 3742, 3766,
 * 3789, 3813, 3838, 3861, 3886, 3911, 3936, 3962, 3988, 4015, 4041, 4067, 4095};*/

/* static uint16_t _calibration_gamma[] */
/*  //= */
/*  {0,60,122,186,250,314,375,431,484,533,580,625,668,710,750,789,827,864,900,936,972,1006,1041,1075,1110,1143,1176,1208,1240,1273,1304,1334,1365,1395,1425,1454,1483,1511,1539,1568,1595,1622,1648,1674,1700,1726,1750,1776,1800,1823,1847,1870,1893,1915,1938,1960,1981,2002,2023,2044,2065,2084,2103,2123,2142,2160,2178,2197,2214,2232,2249,2266,2283,2300,2316,2332,2348,2365,2380,2396,2412,2427,2443,2458,2473,2488,2503,2517,2532,2546,2560,2575,2588,2602,2616,2630,2643,2657,2670,2684,2697,2710,2723,2737,2750,2761,2774,2787,2800,2812,2824,2837,2848,2861,2873,2884,2897,2908,2920,2932,2943,2955,2966,2978,2989,2999,3011,3022,3033,3044,3055,3066,3076,3088,3098,3108,3120,3130,3140,3150,3161,3171,3181,3191,3202,3212,3221,3231,3242,3252,3261,3271,3280,3290,3300,3310,3319,3329,3338,3347,3356,3367,3376,3385,3394,3403,3412,3421,3430,3439,3448,3457,3466,3475,3484,3493,3502,3510,3519,3527,3536,3544,3553,3561,3570,3578,3587,3595,3604,3612,3619,3628,3636,3644,3652,3661,3668,3676,3684,3692,3700,3707,3715,3723,3731,3738,3746,3754,3762,3769,3777,3784,3791,3799,3807,3814,3821,3829,3836,3843,3851,3857,3865,3872,3879,3887,3894,3900,3908,3914,3922,3929,3935,3943,3949,3956,3963,3970,3977,3983,3991,3997,4004,4010,4017,4023,4031,4037,4044,4050,4057,4063,4070,4076,4083,4089,4095}; */
/*  = {0, 44, 90, 140, 193, 248, 302, 355, 407, 458, 509, 559, 607, 655, 702, 748, 793, 837, 879, 922, 963, 1003, 1042, */
/*  1081, 1119, 1156, 1192, 1226, 1261, 1295, 1327, 1359, 1390, 1421, 1450, 1479, 1507, 1534, 1561, 1588, 1613, 1638, */
/*  1662, 1685, 1708, 1731, 1753, 1775, 1797, 1818, 1839, 1860, 1880, 1900, 1921, 1941, 1960, 1979, 1998, 2017, 2036, */
/*  2054, 2072, 2091, 2109, 2125, 2143, 2161, 2177, 2195, 2211, 2228, 2244, 2260, 2276, 2292, 2307, 2323, 2338, 2353, */
/*  2368, 2384, 2399, 2413, 2428, 2442, 2457, 2471, 2485, 2498, 2512, 2527, 2539, 2553, 2566, 2580, 2592, 2606, 2618, */
/*  2632, 2644, 2656, 2668, 2681, 2694, 2705, 2717, 2728, 2740, 2752, 2763, 2775, 2785, 2797, 2808, 2818, 2830, 2840, */
/*  2851, 2861, 2872, 2882, 2893, 2903, 2913, 2923, 2933, 2943, 2953, 2963, 2973, 2983, 2992, 3002, 3012, 3021, 3031, */
/*  3041, 3050, 3059, 3068, 3078, 3087, 3096, 3106, 3115, 3124, 3133, 3142, 3152, 3160, 3169, 3178, 3187, 3196, 3205, */
/*  3214, 3223, 3232, 3240, 3249, 3258, 3267, 3276, 3284, 3293, 3302, 3310, 3319, 3328, 3337, 3346, 3354, 3363, 3372, */
/*  3380, 3389, 3398, 3407, 3415, 3424, 3432, 3442, 3450, 3459, 3467, 3476, 3485, 3494, 3502, 3511, 3520, 3529, 3537, */
/*  3546, 3555, 3564, 3573, 3581, 3590, 3599, 3608, 3617, 3626, 3634, 3643, 3652, 3661, 3670, 3679, 3688, 3697, 3706, */
/*  3715, 3724, 3733, 3741, 3751, 3760, 3768, 3778, 3786, 3795, 3804, 3813, 3823, 3831, 3839, 3849, 3857, 3867, 3875, */
/*  3884, 3894, 3902, 3911, 3920, 3929, 3937, 3946, 3956, 3964, 3973, 3982, 3990, 3999, 4009, 4017, 4026, 4035, 4044, */
/*  4052, 4061, 4070, 4079, 4087, 4095, }; */

/* // CALIBRATION_IRIDIX_ASYMMETRY */
/* static uint16_t _calibration_iridix_asymmetry[] */
/* // = */
/* {0,7517,13842,19240,23899,27962,31536,34704,37532,40072,42366,44448,46345,48082,49678,51149,52510,53772,54946,56041,57064,58023,58923,59769,60567,61319,62031,62705,63343,63950,64527,65076,65535}; */
/* ={0, 61184, 116961, 168002, 214899, 258115, 298084, 335172, 369653, 401797, 431862, 460022, 486454, 511335, 534791, */
/* 556919, 577880, 597720, 616568, 634473, 651529, 667785, 683305, 698153, 712346, 725978, 739050, 751610, 763706, */
/* 775355, 786587, 797451, 807931, 818091, 827947, 837499, 846780, 855820, 864604, 873180, 881532, 889708, 897708, */
/* 905532, 913213, 920733, 928141, 935421, 942589, 949645, 956621, 963501, 970317, 977053, 983742, 990366, 996942, */
/* 1003470, 1009982, 1016446, 1022894, 1029326, 1035742, 1042158, 1048575, }; */

/* CALIBRATION_IRIDIX_ASYMMETRY */
static uint32_t _calibration_iridix_asymmetry[] =
{
    0,      61184,  116961, 168002, 214899, 258115,  298084,  335172,  369653,  401797,  431862,  460022,  486454,
    511335, 534791, 556919, 577880, 597720, 616568,  634473,  651529,  667785,  683305,  698153,  712346,  725978,
    739050, 751610, 763706, 775355, 786587, 797451,  807931,  818091,  827947,  837499,  846780,  855820,  864604,
    873180, 881532, 889708, 897708, 905532, 913213,  920733,  928141,  935421,  942589,  949645,  956621,  963501,
    970317, 977053, 983742, 990366, 996942, 1003470, 1009982, 1016446, 1022894, 1029326, 1035742, 1042158, 1048575,
};

/* calibration_awb_scene_presets in the following order AWB_DAY_LIGHT AWB_CLOUDY AWB_INCANDESCENT AWB_FLUORESCENT */
/* AWB_TWILIGHT AWB_SHADE AWB_WARM_FLUORESCENT */
static uint16_t _calibration_awb_scene_presets[ 7 ][ 2 ] =
{
    { 256, 257 },
    { 293, 202 },
    { 147, 461 },
    { 210, 307 },
    { 210, 307 },
    { 313, 187 },
    { 160, 376 },
};

static uint32_t _calibration_decompander0_mem[] =
{
    0,      32768,  65536,  98304,  131072, 163840, 196608, 229376, 262144, 294912,  327680,
    360448, 393216, 425984, 458752, 491520, 524288, 557055, 589823, 622591, 655359,  688127,
    720895, 753663, 786431, 819199, 851967, 884735, 917503, 950271, 983039, 1015807, 1048575
};
static uint32_t _calibration_decompander1_mem[] =
{
    0,       4096,    8192,    12288,   16384,   20480,   24576,   28672,   32768,   36864,  40960,  45056,   49152,
    53248,   57344,   61440,   65536,   69632,   73728,   77824,   81920,   86016,   90112,  94208,  98304,   102400,
    106496,  110592,  114688,  118784,  122880,  126976,  131072,  135168,  139264,  143360, 147456, 151552,  155648,
    159744,  163840,  167936,  172032,  176128,  180224,  184320,  188416,  192512,  196608, 200704, 204800,  208896,
    212992,  217088,  221184,  225280,  229376,  233472,  237568,  241664,  245760,  249856, 253952, 258048,  262144,
    266240,  270336,  274432,  278528,  282624,  286720,  290816,  294912,  299008,  303104, 307200, 311296,  315392,
    319488,  323584,  327680,  331776,  335872,  339968,  344064,  348160,  352256,  356352, 360448, 364544,  368640,
    372736,  376832,  380928,  385024,  389120,  393216,  397312,  401408,  405504,  409600, 413696, 417792,  421888,
    425984,  430080,  434176,  438272,  442368,  446464,  450560,  454656,  458752,  462848, 466944, 471040,  475136,
    479232,  483328,  487424,  491520,  495616,  499712,  503808,  507904,  512000,  516096, 520192, 524288,  528383,
    532479,  536575,  540671,  544767,  548863,  552959,  557055,  561151,  565247,  569343, 573439, 577535,  581631,
    585727,  589823,  593919,  598015,  602111,  606207,  610303,  614399,  618495,  622591, 626687, 630783,  634879,
    638975,  643071,  647167,  651263,  655359,  659455,  663551,  667647,  671743,  675839, 679935, 684031,  688127,
    692223,  696319,  700415,  704511,  708607,  712703,  716799,  720895,  724991,  729087, 733183, 737279,  741375,
    745471,  749567,  753663,  757759,  761855,  765951,  770047,  774143,  778239,  782335, 786431, 790527,  794623,
    798719,  802815,  806911,  811007,  815103,  819199,  823295,  827391,  831487,  835583, 839679, 843775,  847871,
    851967,  856063,  860159,  864255,  868351,  872447,  876543,  880639,  884735,  888831, 892927, 897023,  901119,
    905215,  909311,  913407,  917503,  921599,  925695,  929791,  933887,  937983,  942079, 946175, 950271,  954367,
    958463,  962559,  966655,  970751,  974847,  978943,  983039,  987135,  991231,  995327, 999423, 1003519, 1007615,
    1011711, 1015807, 1019903, 1023999, 1028095, 1032191, 1036287, 1040383, 1044479, 1048575
};

static uint32_t _scaler_h_filter[] =
{
    0x27f70200, 0x0002f727, 0x29f70200, 0x0002f824, 0x2cf70200, 0x0002f821, 0x2ef70200, 0x0002f91e, 0x30f70200,
    0x0002f91c, 0x33f70200, 0x0001fa19, 0x35f70200, 0x0001fa17, 0x37f70200, 0x0001fb14, 0x39f70200, 0x0001fc11,
    0x3af80200, 0x0001fc0f, 0x3bf90200, 0x0001fd0c, 0x3cfa0200, 0x0001fd0a, 0x3efb0100, 0x0000fe08, 0x3efc0100,
    0x0000ff06, 0x3ffd0100, 0x0000ff04, 0x40fe0000, 0x00000002, 0x40000000, 0x00000000, 0x40020000, 0x000000fe,
    0x3f04ff00, 0x000001fd, 0x3e06ff00, 0x000001fc, 0x3e08fe00, 0x000001fb, 0x3c0afd01, 0x000002fa, 0x3b0cfd01,
    0x000002f9, 0x3a0ffc01, 0x000002f8, 0x3911fc01, 0x000002f7, 0x3714fb01, 0x000002f7, 0x3517fa01, 0x000002f7,
    0x3319fa01, 0x000002f7, 0x301cf902, 0x000002f7, 0x2e1ef902, 0x000002f7, 0x2c21f802, 0x000002f7, 0x2924f802,
    0x000002f7, 0x25fbfd05, 0x00fdfb26, 0x27fcfc05, 0x00fefa24, 0x28fdfc05, 0x00fef923, 0x29fefb05, 0x00fff921,
    0x29fffb06, 0x00fff820, 0x2a00fa06, 0x0000f81e, 0x2b01fa06, 0x0000f71d, 0x2b02f906, 0x0001f71c, 0x2c03f906,
    0x0001f71a, 0x2d04f806, 0x0002f619, 0x2d06f806, 0x0002f617, 0x2d07f806, 0x0003f615, 0x2f08f705, 0x0003f614,
    0x2f09f705, 0x0004f612, 0x2f0bf705, 0x0004f610, 0x2f0df605, 0x0004f60f, 0x2f0df605, 0x0005f60e, 0x2f0ff604,
    0x0005f60d, 0x2f10f604, 0x0005f70b, 0x2f12f604, 0x0005f709, 0x2f14f603, 0x0005f708, 0x2d15f603, 0x0006f807,
    0x2d17f602, 0x0006f806, 0x2d19f602, 0x0006f804, 0x2c1af701, 0x0006f903, 0x2b1cf701, 0x0006f902, 0x2b1df700,
    0x0006fa01, 0x2a1ef800, 0x0006fa00, 0x2920f8ff, 0x0006fbff, 0x2921f9ff, 0x0005fbfe, 0x2823f9fe, 0x0005fcfd,
    0x2724fafe, 0x0005fcfc, 0x1e0afafc, 0x00fa0a1e, 0x1e0bfafc, 0x00fa091e, 0x1e0cfbfb, 0x00fa091d, 0x1f0cfbfb,
    0x00fa081d, 0x200dfbfb, 0x00f9071d, 0x200efbfb, 0x00f9071c, 0x200efcfb, 0x00f9061c, 0x210ffcfa, 0x00f9051c,
    0x2110fcfa, 0x00f9051b, 0x2111fdfa, 0x00f9041a, 0x2211fdfa, 0x00f9031a, 0x2212fefa, 0x00f90318, 0x2213fefa,
    0x00f90218, 0x2213fff9, 0x00f90218, 0x2215fff9, 0x00f90117, 0x2215fff9, 0x00f90117, 0x221600f9, 0x00f90016,
    0x221701f9, 0x00f9ff15, 0x221701f9, 0x00f9ff15, 0x221802f9, 0x00f9ff13, 0x221802f9, 0x00fafe13, 0x221803f9,
    0x00fafe12, 0x221a03f9, 0x00fafd11, 0x211a04f9, 0x00fafd11, 0x211b05f9, 0x00fafc10, 0x211c05f9, 0x00fafc0f,
    0x201c06f9, 0x00fbfc0e, 0x201c07f9, 0x00fbfb0e, 0x201d07f9, 0x00fbfb0d, 0x1f1d08fa, 0x00fbfb0c, 0x1e1d09fa,
    0x00fbfb0c, 0x1e1e09fa, 0x00fcfa0b, 0x0e0b0602, 0x00060b0e, 0x0e0b0702, 0x00060b0d, 0x0e0b0702, 0x00060b0d,
    0x0e0b0702, 0x00060b0d, 0x0e0c0702, 0x00060a0d, 0x0e0c0702, 0x00060a0d, 0x0e0c0703, 0x00050a0d, 0x0e0c0703,
    0x00050a0d, 0x0e0c0703, 0x00050a0d, 0x0e0c0803, 0x0005090d, 0x0e0c0803, 0x0005090d, 0x0e0c0803, 0x0005090d,
    0x0e0c0803, 0x0005090d, 0x0e0c0804, 0x0004090d, 0x0e0c0804, 0x0004090d, 0x0e0c0904, 0x0004090c, 0x0e0c0904,
    0x0004090c, 0x0e0c0904, 0x0004090c, 0x0e0d0904, 0x0004080c, 0x0e0d0904, 0x0004080c, 0x0e0d0905, 0x0003080c,
    0x0e0d0905, 0x0003080c, 0x0e0d0905, 0x0003080c, 0x0e0d0905, 0x0003080c, 0x0e0d0a05, 0x0003070c, 0x0e0d0a05,
    0x0003070c, 0x0e0d0a05, 0x0003070c, 0x0e0d0a06, 0x0002070c, 0x0e0d0a06, 0x0002070c, 0x0e0d0b06, 0x0002070b,
    0x0e0d0b06, 0x0002070b, 0x0e0d0b06, 0x0002070b
};

static uint32_t _scaler_v_filter[] =
{
    0x00400000, 0x00000000, 0x0240fe00, 0x00000000, 0x0340fd01, 0x000000ff, 0x053ffc01, 0x000000ff, 0x073ffb01,
    0x000000fe, 0x093efa01, 0x000000fe, 0x0c3cf901, 0x000000fe, 0x0e3bf901, 0x000000fd, 0x1138f801, 0x000001fd,
    0x1337f801, 0x000001fc, 0x1635f801, 0x000001fb, 0x1932f801, 0x000001fb, 0x1b31f801, 0x000001fa, 0x1e2ef801,
    0x000001fa, 0x212cf801, 0x000001f9, 0x2429f801, 0x000001f9, 0x2626f901, 0x000001f9, 0x2924f901, 0x000001f8,
    0x2c21f901, 0x000001f8, 0x2e1efa01, 0x000001f8, 0x311bfa01, 0x000001f8, 0x3219fb01, 0x000001f8, 0x3516fb01,
    0x000001f8, 0x3713fc01, 0x000001f8, 0x3811fd01, 0x000001f8, 0x3b0efd00, 0x000001f9, 0x3c0cfe00, 0x000001f9,
    0x3e09fe00, 0x000001fa, 0x3f07fe00, 0x000001fb, 0x3f05ff00, 0x000001fc, 0x4003ff00, 0x000001fd, 0x40020000,
    0x000000fe, 0x2526fbfd, 0x0005fdfb, 0x2724fafe, 0x0005fcfc, 0x2823f9fe, 0x0005fcfd, 0x2921f9ff, 0x0005fbfe,
    0x2920f8ff, 0x0006fbff, 0x2a1ef800, 0x0006fa00, 0x2b1df700, 0x0006fa01, 0x2b1cf701, 0x0006f902, 0x2c1af701,
    0x0006f903, 0x2d19f602, 0x0006f804, 0x2d17f602, 0x0006f806, 0x2d15f603, 0x0006f807, 0x2f14f603, 0x0005f708,
    0x2f12f604, 0x0005f709, 0x2f10f604, 0x0005f70b, 0x2f0ff604, 0x0005f60d, 0x2f0ef605, 0x0005f60d, 0x2f0df605,
    0x0004f60f, 0x2f0bf705, 0x0004f610, 0x2f09f705, 0x0004f612, 0x2f08f705, 0x0003f614, 0x2d07f806, 0x0003f615,
    0x2d06f806, 0x0002f617, 0x2d04f806, 0x0002f619, 0x2c03f906, 0x0001f71a, 0x2b02f906, 0x0001f71c, 0x2b01fa06,
    0x0000f71d, 0x2a00fa06, 0x0000f81e, 0x29fffb06, 0x00fff820, 0x29fefb05, 0x00fff921, 0x28fdfc05, 0x00fef923,
    0x27fcfc05, 0x00fefa24, 0x1e1e0afa, 0x00fcfa0a, 0x1e1e09fa, 0x00fcfa0b, 0x1e1d09fa, 0x00fbfb0c, 0x1f1d08fa,
    0x00fbfb0c, 0x201d07f9, 0x00fbfb0d, 0x201c07f9, 0x00fbfb0e, 0x201c06f9, 0x00fbfc0e, 0x211c05f9, 0x00fafc0f,
    0x211b05f9, 0x00fafc10, 0x211a04f9, 0x00fafd11, 0x221a03f9, 0x00fafd11, 0x221803f9, 0x00fafe12, 0x221802f9,
    0x00fafe13, 0x221802f9, 0x00f9ff13, 0x221701f9, 0x00f9ff15, 0x221701f9, 0x00f9ff15, 0x221600f9, 0x00f90016,
    0x2215fff9, 0x00f90117, 0x2215fff9, 0x00f90117, 0x2213fff9, 0x00f90218, 0x2213fefa, 0x00f90218, 0x2212fefa,
    0x00f90318, 0x2211fdfa, 0x00f9031a, 0x2111fdfa, 0x00f9041a, 0x2110fcfa, 0x00f9051b, 0x210ffcfa, 0x00f9051c,
    0x200efcfb, 0x00f9061c, 0x200efbfb, 0x00f9071c, 0x200dfbfb, 0x00f9071d, 0x1f0cfbfb, 0x00fa081d, 0x1e0cfbfb,
    0x00fa091d, 0x1e0bfafc, 0x00fa091e, 0x0e0e0b06, 0x0002060b, 0x0e0d0b06, 0x0002070b, 0x0e0d0b06, 0x0002070b,
    0x0e0d0b06, 0x0002070b, 0x0e0d0a06, 0x0002070c, 0x0e0d0a06, 0x0002070c, 0x0e0d0a05, 0x0003070c, 0x0e0d0a05,
    0x0003070c, 0x0e0d0a05, 0x0003070c, 0x0e0d0905, 0x0003080c, 0x0e0d0905, 0x0003080c, 0x0e0d0905, 0x0003080c,
    0x0e0d0905, 0x0003080c, 0x0e0d0904, 0x0004080c, 0x0e0d0904, 0x0004080c, 0x0e0c0904, 0x0004090c, 0x0e0c0904,
    0x0004090c, 0x0e0c0904, 0x0004090c, 0x0e0c0804, 0x0004090d, 0x0e0c0804, 0x0004090d, 0x0e0c0803, 0x0005090d,
    0x0e0c0803, 0x0005090d, 0x0e0c0803, 0x0005090d, 0x0e0c0803, 0x0005090d, 0x0e0c0703, 0x00050a0d, 0x0e0c0703,
    0x00050a0d, 0x0e0c0703, 0x00050a0d, 0x0e0c0702, 0x00060a0d, 0x0e0c0702, 0x00060a0d, 0x0e0b0702, 0x00060b0d,
    0x0e0b0702, 0x00060b0d, 0x0e0b0702, 0x00060b0d
};

static uint32_t _calibration_awb_mix_light_parameters[] =
{
    1,    /* 1 = enable, 0 = disable */
    300,  /* lux low boundary for mix light lux range : range = {500: inf} */
    2000, /* lux high boundary for mix light range : range = {500: inf} */
    3000, /* contrast threshold for mix light: range = {200:2000} */
    330,  /* BG threshold {255:400} */
    5,    /* BG weight */
    310,  /* rgHigh_LUT_max */
    252,  /* rgHigh_LUT_min */
    0     /* print debug */
};

/* CALIBRATION_AWB_WARMING_CCT */
static int16_t _calibration_awb_warming_cct[] = { 7500, 6000, 4700, 2800 };

static LookupTable calibration_awb_mix_light_parameters =
{
    .ptr   = _calibration_awb_mix_light_parameters,
    .rows  = 1,
    .cols  = sizeof( _calibration_awb_mix_light_parameters )
             / sizeof( _calibration_awb_mix_light_parameters[ 0 ] ),
    .width = sizeof( _calibration_awb_mix_light_parameters[ 0 ] )
};
static LookupTable calibration_scaler_h_filter =
{
    .ptr   = _scaler_h_filter,
    .rows  = 1,
    .cols  = sizeof( _scaler_h_filter ) / sizeof( _scaler_h_filter[ 0 ] ),
    .width = sizeof( _scaler_h_filter[ 0 ] )
};
static LookupTable calibration_scaler_v_filter =
{
    .ptr   = _scaler_v_filter,
    .rows  = 1,
    .cols  = sizeof( _scaler_v_filter ) / sizeof( _scaler_v_filter[ 0 ] ),
    .width = sizeof( _scaler_v_filter[ 0 ] )
};
static LookupTable calibration_awb_warming_cct =
{
    .ptr   = _calibration_awb_warming_cct,
    .rows  = 1,
    .cols  = sizeof( _calibration_awb_warming_cct )
             / sizeof( _calibration_awb_warming_cct[ 0 ] ),
    .width = sizeof( _calibration_awb_warming_cct[ 0 ] )
};

static LookupTable calibration_decompander0_mem =
{
    .ptr   = _calibration_decompander0_mem,
    .rows  = 1,
    .cols  = sizeof( _calibration_decompander0_mem )
             / sizeof( _calibration_decompander0_mem[ 0 ] ),
    .width = sizeof( _calibration_decompander0_mem[ 0 ] )
};
static LookupTable calibration_decompander1_mem =
{
    .ptr   = _calibration_decompander1_mem,
    .rows  = 1,
    .cols  = sizeof( _calibration_decompander1_mem )
             / sizeof( _calibration_decompander1_mem[ 0 ] ),
    .width = sizeof( _calibration_decompander1_mem[ 0 ] )
};
static LookupTable calibration_awb_scene_presets =
{
    .ptr   = _calibration_awb_scene_presets,
    .cols  = 2,
    .rows  = sizeof( _calibration_awb_scene_presets )
             / sizeof( _calibration_awb_scene_presets[ 0 ] ),
    .width = sizeof( _calibration_awb_scene_presets[ 0 ][ 0 ] )
};
static LookupTable calibration_light_src =
{
    .ptr   = _calibration_light_src,
    .cols  = 2,
    .rows  = sizeof( _calibration_light_src ) / sizeof( _calibration_light_src[ 0 ] ),
    .width = sizeof( _calibration_light_src[ 0 ][ 0 ] )
};
static LookupTable calibration_rg_pos =
{
    .ptr   = _calibration_rg_pos,
    .rows  = 1,
    .cols  = sizeof( _calibration_rg_pos ) / sizeof( _calibration_rg_pos[ 0 ] ),
    .width = sizeof( _calibration_rg_pos[ 0 ] )
};
static LookupTable calibration_bg_pos =
{
    .ptr   = _calibration_bg_pos,
    .rows  = 1,
    .cols  = sizeof( _calibration_bg_pos ) / sizeof( _calibration_bg_pos[ 0 ] ),
    .width = sizeof( _calibration_bg_pos[ 0 ] )
};
static LookupTable calibration_mesh_rgbg_weight =
{
    .ptr   = _calibration_mesh_rgbg_weight,
    .cols  = 15,
    .rows  = sizeof( _calibration_mesh_rgbg_weight )
             / sizeof( _calibration_mesh_rgbg_weight[ 0 ] ),
    .width = sizeof( _calibration_mesh_rgbg_weight[ 0 ][ 0 ] )
};
static LookupTable calibration_mesh_ls_weight =
{
    .ptr   = _calibration_mesh_ls_weight,
    .cols  = 15,
    .rows  = sizeof( _calibration_mesh_ls_weight )
             / sizeof( _calibration_mesh_ls_weight[ 0 ] ),
    .width = sizeof( _calibration_mesh_ls_weight[ 0 ][ 0 ] )
};
static LookupTable calibration_mesh_color_temperature =
{
    .ptr   = _calibration_mesh_color_temperature,
    .cols  = 15,
    .rows  = sizeof( _calibration_mesh_color_temperature )
             / sizeof( _calibration_mesh_color_temperature[ 0 ] ),
    .width = sizeof( _calibration_mesh_color_temperature[ 0 ][ 0 ] )
};
static LookupTable calibration_wb_strength =
{
    .ptr   = _calibration_wb_strength,
    .rows  = 1,
    .cols  = sizeof( _calibration_wb_strength )
             / sizeof( _calibration_wb_strength[ 0 ] ),
    .width = sizeof( _calibration_wb_strength[ 0 ] )
};
static LookupTable calibration_sky_lux_th =
{
    .ptr   = _calibration_sky_lux_th,
    .rows  = 1,
    .cols  =
        sizeof( _calibration_sky_lux_th ) / sizeof( _calibration_sky_lux_th[ 0 ] ),
    .width = sizeof( _calibration_sky_lux_th[ 0 ] )
};
static LookupTable calibration_ct_rg_pos_calc =
{
    .ptr   = _calibration_ct_rg_pos_calc,
    .rows  = 1,
    .cols  = sizeof( _calibration_ct_rg_pos_calc )
             / sizeof( _calibration_ct_rg_pos_calc[ 0 ] ),
    .width = sizeof( _calibration_ct_rg_pos_calc[ 0 ] )
};
static LookupTable calibration_ct_bg_pos_calc =
{
    .ptr   = _calibration_ct_bg_pos_calc,
    .rows  = 1,
    .cols  = sizeof( _calibration_ct_bg_pos_calc )
             / sizeof( _calibration_ct_bg_pos_calc[ 0 ] ),
    .width = sizeof( _calibration_ct_bg_pos_calc[ 0 ] )
};
static LookupTable calibration_color_temp =
{
    .ptr   = _calibration_color_temp,
    .rows  = 1,
    .cols  =
        sizeof( _calibration_color_temp ) / sizeof( _calibration_color_temp[ 0 ] ),
    .width = sizeof( _calibration_color_temp[ 0 ] )
};
static LookupTable calibration_ct65pos =
{
    .ptr   = _calibration_ct65pos,
    .rows  = 1,
    .cols  = sizeof( _calibration_ct65pos ) / sizeof( _calibration_ct65pos[ 0 ] ),
    .width = sizeof( _calibration_ct65pos[ 0 ] )
};
static LookupTable calibration_ct40pos =
{
    .ptr   = _calibration_ct40pos,
    .rows  = 1,
    .cols  = sizeof( _calibration_ct40pos ) / sizeof( _calibration_ct40pos[ 0 ] ),
    .width = sizeof( _calibration_ct40pos[ 0 ] )
};
static LookupTable calibration_ct30pos =
{
    .ptr   = _calibration_ct30pos,
    .rows  = 1,
    .cols  = sizeof( _calibration_ct30pos ) / sizeof( _calibration_ct30pos[ 0 ] ),
    .width = sizeof( _calibration_ct30pos[ 0 ] )
};
static LookupTable calibration_evtolux_ev_lut =
{
    .ptr   = _calibration_evtolux_ev_lut,
    .rows  = 1,
    .cols  = sizeof( _calibration_evtolux_ev_lut )
             / sizeof( _calibration_evtolux_ev_lut[ 0 ] ),
    .width = sizeof( _calibration_evtolux_ev_lut[ 0 ] )
};
static LookupTable calibration_evtolux_lux_lut =
{
    .ptr   = _calibration_evtolux_lux_lut,
    .rows  = 1,
    .cols  = sizeof( _calibration_evtolux_lux_lut )
             / sizeof( _calibration_evtolux_lux_lut[ 0 ] ),
    .width = sizeof( _calibration_evtolux_lux_lut[ 0 ] )
};
static LookupTable calibration_black_level_r =
{
    .ptr   = _calibration_black_level_r,
    .cols  = 2,
    .rows  = sizeof( _calibration_black_level_r )
             / sizeof( _calibration_black_level_r[ 0 ] ),
    .width = sizeof( _calibration_black_level_r[ 0 ][ 0 ] )
};
static LookupTable calibration_black_level_gr =
{
    .ptr   = _calibration_black_level_gr,
    .cols  = 2,
    .rows  = sizeof( _calibration_black_level_gr )
             / sizeof( _calibration_black_level_gr[ 0 ] ),
    .width = sizeof( _calibration_black_level_gr[ 0 ][ 0 ] )
};
static LookupTable calibration_black_level_gb =
{
    .ptr   = _calibration_black_level_gb,
    .cols  = 2,
    .rows  = sizeof( _calibration_black_level_gb )
             / sizeof( _calibration_black_level_gb[ 0 ] ),
    .width = sizeof( _calibration_black_level_gb[ 0 ][ 0 ] )
};
static LookupTable calibration_black_level_b =
{
    .ptr   = _calibration_black_level_b,
    .cols  = 2,
    .rows  = sizeof( _calibration_black_level_b )
             / sizeof( _calibration_black_level_b[ 0 ] ),
    .width = sizeof( _calibration_black_level_b[ 0 ][ 0 ] )
};
static LookupTable calibration_static_wb =
{
    .ptr   = _calibration_static_wb,
    .rows  = 1,
    .cols  = sizeof( _calibration_static_wb ) / sizeof( _calibration_static_wb[ 0 ] ),
    .width = sizeof( _calibration_static_wb[ 0 ] )
};
static LookupTable calibration_mt_absolute_ls_a_ccm =
{
    .ptr   = _calibration_mt_absolute_ls_a_ccm,
    .rows  = 1,
    .cols  = sizeof( _calibration_mt_absolute_ls_a_ccm )
             / sizeof( _calibration_mt_absolute_ls_a_ccm[ 0 ] ),
    .width = sizeof( _calibration_mt_absolute_ls_a_ccm[ 0 ] )
};
static LookupTable calibration_mt_absolute_ls_d40_ccm =
{
    .ptr   = _calibration_mt_absolute_ls_d40_ccm,
    .rows  = 1,
    .cols  = sizeof( _calibration_mt_absolute_ls_d40_ccm )
             / sizeof( _calibration_mt_absolute_ls_d40_ccm[ 0 ] ),
    .width = sizeof( _calibration_mt_absolute_ls_d40_ccm[ 0 ] )
};
static LookupTable calibration_mt_absolute_ls_d50_ccm =
{
    .ptr   = _calibration_mt_absolute_ls_d50_ccm,
    .rows  = 1,
    .cols  = sizeof( _calibration_mt_absolute_ls_d50_ccm )
             / sizeof( _calibration_mt_absolute_ls_d50_ccm[ 0 ] ),
    .width = sizeof( _calibration_mt_absolute_ls_d50_ccm[ 0 ] )
};
static LookupTable calibration_shading_ls_a_r =
{
    .ptr   = _calibration_shading_ls_a_r,
    .rows  = 1,
    .cols  = sizeof( _calibration_shading_ls_a_r )
             / sizeof( _calibration_shading_ls_a_r[ 0 ] ),
    .width = sizeof( _calibration_shading_ls_a_r[ 0 ] )
};
static LookupTable calibration_shading_ls_a_g =
{
    .ptr   = _calibration_shading_ls_a_g,
    .rows  = 1,
    .cols  = sizeof( _calibration_shading_ls_a_g )
             / sizeof( _calibration_shading_ls_a_g[ 0 ] ),
    .width = sizeof( _calibration_shading_ls_a_g[ 0 ] )
};
static LookupTable calibration_shading_ls_a_b =
{
    .ptr   = _calibration_shading_ls_a_b,
    .rows  = 1,
    .cols  = sizeof( _calibration_shading_ls_a_b )
             / sizeof( _calibration_shading_ls_a_b[ 0 ] ),
    .width = sizeof( _calibration_shading_ls_a_b[ 0 ] )
};
static LookupTable calibration_shading_ls_tl84_r =
{
    .ptr   = _calibration_shading_ls_tl84_r,
    .rows  = 1,
    .cols  = sizeof( _calibration_shading_ls_tl84_r )
             / sizeof( _calibration_shading_ls_tl84_r[ 0 ] ),
    .width = sizeof( _calibration_shading_ls_tl84_r[ 0 ] )
};
static LookupTable calibration_shading_ls_tl84_g =
{
    .ptr   = _calibration_shading_ls_tl84_g,
    .rows  = 1,
    .cols  = sizeof( _calibration_shading_ls_tl84_g )
             / sizeof( _calibration_shading_ls_tl84_g[ 0 ] ),
    .width = sizeof( _calibration_shading_ls_tl84_g[ 0 ] )
};
static LookupTable calibration_shading_ls_tl84_b =
{
    .ptr   = _calibration_shading_ls_tl84_b,
    .rows  = 1,
    .cols  = sizeof( _calibration_shading_ls_tl84_b )
             / sizeof( _calibration_shading_ls_tl84_b[ 0 ] ),
    .width = sizeof( _calibration_shading_ls_tl84_b[ 0 ] )
};
static LookupTable calibration_shading_ls_d65_r =
{
    .ptr   = _calibration_shading_ls_d65_r,
    .rows  = 1,
    .cols  = sizeof( _calibration_shading_ls_d65_r )
             / sizeof( _calibration_shading_ls_d65_r[ 0 ] ),
    .width = sizeof( _calibration_shading_ls_d65_r[ 0 ] )
};
static LookupTable calibration_shading_ls_d65_g =
{
    .ptr   = _calibration_shading_ls_d65_g,
    .rows  = 1,
    .cols  = sizeof( _calibration_shading_ls_d65_g )
             / sizeof( _calibration_shading_ls_d65_g[ 0 ] ),
    .width = sizeof( _calibration_shading_ls_d65_g[ 0 ] )
};
static LookupTable calibration_shading_ls_d65_b =
{
    .ptr   = _calibration_shading_ls_d65_b,
    .rows  = 1,
    .cols  = sizeof( _calibration_shading_ls_d65_b )
             / sizeof( _calibration_shading_ls_d65_b[ 0 ] ),
    .width = sizeof( _calibration_shading_ls_d65_b[ 0 ] )
};
static LookupTable calibration_awb_warming_ls_a =
{
    .ptr   = _calibration_awb_warming_ls_a,
    .rows  = 1,
    .cols  = sizeof( _calibration_awb_warming_ls_a )
             / sizeof( _calibration_awb_warming_ls_a[ 0 ] ),
    .width = sizeof( _calibration_awb_warming_ls_a[ 0 ] )
};
static LookupTable calibration_awb_warming_ls_d50 =
{
    .ptr   = _calibration_awb_warming_ls_d50,
    .rows  = 1,
    .cols  = sizeof( _calibration_awb_warming_ls_d50 )
             / sizeof( _calibration_awb_warming_ls_d50[ 0 ] ),
    .width = sizeof( _calibration_awb_warming_ls_d50[ 0 ] )
};
static LookupTable calibration_awb_warming_ls_d75 =
{
    .ptr   = _calibration_awb_warming_ls_d75,
    .rows  = 1,
    .cols  = sizeof( _calibration_awb_warming_ls_d75 )
             / sizeof( _calibration_awb_warming_ls_d75[ 0 ] ),
    .width = sizeof( _calibration_awb_warming_ls_d75[ 0 ] )
};
static LookupTable calibration_noise_profile =
{
    .ptr   = _calibration_noise_profile,
    .rows  = 1,
    .cols  = sizeof( _calibration_noise_profile )
             / sizeof( _calibration_noise_profile[ 0 ] ),
    .width = sizeof( _calibration_noise_profile[ 0 ] )
};
static LookupTable calibration_demosaic =
{
    .ptr   = _calibration_demosaic,
    .rows  = 1,
    .cols  = sizeof( _calibration_demosaic ) / sizeof( _calibration_demosaic[ 0 ] ),
    .width = sizeof( _calibration_demosaic[ 0 ] )
};
static LookupTable calibration_wdr_np_lut =
{
    .ptr   = _calibration_wdr_np_lut,
    .rows  = 1,
    .cols  =
        sizeof( _calibration_wdr_np_lut ) / sizeof( _calibration_wdr_np_lut[ 0 ] ),
    .width = sizeof( _calibration_wdr_np_lut[ 0 ] )
};
static LookupTable calibration_gamma =
{
    .ptr   = _calibration_gamma,
    .rows  = 1,
    .cols  = sizeof( _calibration_gamma ) / sizeof( _calibration_gamma[ 0 ] ),
    .width = sizeof( _calibration_gamma[ 0 ] )
};
static LookupTable calibration_iridix_asymmetry =
{
    .ptr   = _calibration_iridix_asymmetry,
    .rows  = 1,
    .cols  = sizeof( _calibration_iridix_asymmetry )
             / sizeof( _calibration_iridix_asymmetry[ 0 ] ),
    .width = sizeof( _calibration_iridix_asymmetry[ 0 ] )
};

uint32_t get_calibrations_static_fs_lin_dummy( ACameraCalibrations * c )
{
    uint32_t result = 0;

    if( c != 0 )
    {
        c->calibrations[ CALIBRATION_AWB_WARMING_CCT ] = &calibration_awb_warming_cct;
        c->calibrations[ CALIBRATION_SCALER_H_FILTER ] = &calibration_scaler_h_filter;
        c->calibrations[ CALIBRATION_SCALER_V_FILTER ] = &calibration_scaler_v_filter;
        c->calibrations[ CALIBRATION_AWB_MIX_LIGHT_PARAMETERS ] = &calibration_awb_mix_light_parameters;

        c->calibrations[ CALIBRATION_DECOMPANDER0_MEM ] = &calibration_decompander0_mem;
        c->calibrations[ CALIBRATION_DECOMPANDER1_MEM ] = &calibration_decompander1_mem;
        c->calibrations[ CALIBRATION_LIGHT_SRC ] = &calibration_light_src;
        c->calibrations[ CALIBRATION_RG_POS ] = &calibration_rg_pos;
        c->calibrations[ CALIBRATION_BG_POS ] = &calibration_bg_pos;
        c->calibrations[ CALIBRATION_MESH_RGBG_WEIGHT ] = &calibration_mesh_rgbg_weight;
        c->calibrations[ CALIBRATION_MESH_LS_WEIGHT ] = &calibration_mesh_ls_weight;
        c->calibrations[ CALIBRATION_MESH_COLOR_TEMPERATURE ] = &calibration_mesh_color_temperature;
        c->calibrations[ CALIBRATION_WB_STRENGTH ] = &calibration_wb_strength;
        c->calibrations[ CALIBRATION_SKY_LUX_TH ] = &calibration_sky_lux_th;
        c->calibrations[ CALIBRATION_CT_RG_POS_CALC ] = &calibration_ct_rg_pos_calc;
        c->calibrations[ CALIBRATION_CT_BG_POS_CALC ] = &calibration_ct_bg_pos_calc;
        c->calibrations[ CALIBRATION_COLOR_TEMP ] = &calibration_color_temp;
        c->calibrations[ CALIBRATION_CT65POS ] = &calibration_ct65pos;
        c->calibrations[ CALIBRATION_CT40POS ] = &calibration_ct40pos;
        c->calibrations[ CALIBRATION_CT30POS ] = &calibration_ct30pos;
        c->calibrations[ CALIBRATION_EVTOLUX_EV_LUT ] = &calibration_evtolux_ev_lut;
        c->calibrations[ CALIBRATION_EVTOLUX_LUX_LUT ] = &calibration_evtolux_lux_lut;
        c->calibrations[ CALIBRATION_BLACK_LEVEL_R ] = &calibration_black_level_r;
        c->calibrations[ CALIBRATION_BLACK_LEVEL_GR ] = &calibration_black_level_gr;
        c->calibrations[ CALIBRATION_BLACK_LEVEL_GB ] = &calibration_black_level_gb;
        c->calibrations[ CALIBRATION_BLACK_LEVEL_B ] = &calibration_black_level_b;
        c->calibrations[ CALIBRATION_STATIC_WB ] = &calibration_static_wb;
        c->calibrations[ CALIBRATION_MT_ABSOLUTE_LS_A_CCM ] = &calibration_mt_absolute_ls_a_ccm;
        c->calibrations[ CALIBRATION_MT_ABSOLUTE_LS_D40_CCM ] = &calibration_mt_absolute_ls_d40_ccm;
        c->calibrations[ CALIBRATION_MT_ABSOLUTE_LS_D50_CCM ] = &calibration_mt_absolute_ls_d50_ccm;
        c->calibrations[ CALIBRATION_SHADING_LS_A_R ] = &calibration_shading_ls_a_r;
        c->calibrations[ CALIBRATION_SHADING_LS_A_G ] = &calibration_shading_ls_a_g;
        c->calibrations[ CALIBRATION_SHADING_LS_A_B ] = &calibration_shading_ls_a_b;
        c->calibrations[ CALIBRATION_SHADING_LS_TL84_R ] = &calibration_shading_ls_tl84_r;
        c->calibrations[ CALIBRATION_SHADING_LS_TL84_G ] = &calibration_shading_ls_tl84_g;
        c->calibrations[ CALIBRATION_SHADING_LS_TL84_B ] = &calibration_shading_ls_tl84_b;
        c->calibrations[ CALIBRATION_SHADING_LS_D65_R ] = &calibration_shading_ls_d65_r;
        c->calibrations[ CALIBRATION_SHADING_LS_D65_G ] = &calibration_shading_ls_d65_g;
        c->calibrations[ CALIBRATION_SHADING_LS_D65_B ] = &calibration_shading_ls_d65_b;
        c->calibrations[ CALIBRATION_AWB_WARMING_LS_A ] = &calibration_awb_warming_ls_a;
        c->calibrations[ CALIBRATION_AWB_WARMING_LS_D50 ] = &calibration_awb_warming_ls_d50;
        c->calibrations[ CALIBRATION_AWB_WARMING_LS_D75 ] = &calibration_awb_warming_ls_d75;
        c->calibrations[ CALIBRATION_NOISE_PROFILE ] = &calibration_noise_profile;
        c->calibrations[ CALIBRATION_DEMOSAIC ] = &calibration_demosaic;
        c->calibrations[ CALIBRATION_WDR_NP_LUT ] = &calibration_wdr_np_lut;
        c->calibrations[ CALIBRATION_GAMMA ] = &calibration_gamma;
        c->calibrations[ CALIBRATION_IRIDIX_ASYMMETRY ] = &calibration_iridix_asymmetry;
        c->calibrations[ CALIBRATION_AWB_SCENE_PRESETS ] = &calibration_awb_scene_presets;
    }
    else
    {
        result = -1;
    }

    return result;
}
